package algorithms.leaning.class03;

import common.bean.ListNode;
import common.util.MyUtil;

/**
 * 反转单链表
 *
 * @author guichang
 * @date 2021/5/30
 */

@SuppressWarnings("all")
public class Code2_链表_反转 {

    public static void main(String[] args) {
        ListNode node = MyUtil.createNode(1, 2, 3, 4, 5, 6, 7, 9);
        ListNode reverse = reverse(node);
        MyUtil.printListNode(reverse);

    }

    public static ListNode reverse(ListNode node) {
        // 新头部开始指向空
        ListNode newHead = null;
        for (ListNode curr = node; curr != null; ) {
            // 临时存储curr.next
            ListNode temp = curr.next;
            // 指向新头部
            curr.next = newHead;
            // 新头部往后移
            newHead = curr;
            // 当前节点往后移
            curr = temp;
        }
        return newHead;
    }

}